//自己封装的 uni.request
// import http from '@/common/api'
var jweixin = require('jweixin-module');


export default {
	/* 判断是否在微信中 */
	isWechat: function() {
		var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
			//console.log('是微信客户端')  
			return true;
		} else {
			//console.log('不是微信客户端')  
			//以下是我项目中所需要的操作其他，可以自定义
			uni.showModal({
				title: '提示',
				content: '请在微信浏览器中打开',
				showCancel: false,
				success: function(res) {
					if (res.confirm) {
						// console.log('用户点击确定');
					} else if (res.cancel) {
						// console.log('用户点击取消');
					}
				}
			});
			return false;
		}
	},
	/* 获取sdk初始化配置 */
	initJssdk: function(callback) {
		console.log("initJssdk")
		var that = this    
		//获取当前url然后传递给后台获取授权和签名信息  
	
		var url = encodeURIComponent(window.location.href.split('#')[0]); 
		uni.request({
			url:"https://platform.easys.co/apigac/getSignPackage?url="+url,
			 success: (res) => {
				 console.log(res)
			       const { data } = res.data;
			       jweixin.config({
			       	debug: data.debug,
			       	appId: data.appId,
			       	timestamp: data.timestamp,
			       	nonceStr: data.nonceStr,
			       	signature: data.signature,
			       	jsApiList: [ //这里是需要用到的接口名称  
						'startSearchBeacons',
						'stopSearchBeacons',
						'onSearchBeacons',
			       		'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
			       		'updateAppMessageShareData', //分享朋友
			       		'updateTimelineShareData', //分享朋友圈  
			       		'getLocation', //获取位置  
			       		'openLocation', //打开位置  
			       		'scanQRCode', //扫一扫接口  
			       		'chooseWXPay', //微信支付  
			       		'chooseImage', //拍照或从手机相册中选图接口  
			       		'previewImage', //预览图片接口  
			       		'uploadImage', //上传图片  
						'startRecord',
						'stopRecord',
			       		'uploadVoice', 
						'onVoiceRecordEnd',
			       		 'playVoice', 
						 'pauseVoice',
			       		 'downloadVoice' 
			       	],
			       });
			       if (callback) {
			       	callback(res.data);
			       }
			},fail(res) {
				console.log(res)
			}
		})
	},
//获取地址栏的参数
    getUrlParam (name) {
                    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                    var r = window.location.search.substr(1).match(reg);
                    if (r != null) return unescape(r[2]); return null;
            },
	getOpenId(code) {
				uni.showLoading({
					title:"登陆中"
				})
				var that = this
				uni.request({
				    url: 'https://platform.easys.co/apigac/getOpenIdByCode?code='+code, 
				    success: (res) => {
						uni.showLoading({
							title:"登录成功"
						})
						uni.hideLoading()
						getApp().globalData.openid = res.data.data.openid
						uni.setStorageSync('openid', res.data.data.openid);
				        console.log(res);
				        console.log(getApp().globalData.openid);
				        console.log(uni.getStorageSync('openid'));
				    },fail: (res) => {
				    	 console.log(res);
				    }
				});
			},
	//获取openid
	initgetOpenId: function(callback) {
		var that = this
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		console.log("uni.getStorageSync('openid')="+uni.getStorageSync('openid'));
		if (uni.getStorageSync('openid')) {
			return;
		}

		// this.initJssdk(function(res) {
		// 	console.log(res)
		// 	jweixin.ready(function() {
				var code = that.getUrlParam('code') // 截取路径中的code，如果没有就去微信授权，如果已经获取到了就直接传code给后台获取openId
				var local = window.location.href;
				// console.log(res.data.appId)
				if (code == null || code === '') {
					// window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+ res.data.appId+'&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
						// 需要修改下面的appid
					window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx1e577d7af6f23151&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
				} else {
					console.log(code)

		
					that.getOpenId(code) //把code传给后台获取用户信息
				}
			// });
		// });
	},
	//在需要定位页面调用  
	getlocation: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.getLocation({
					type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'  
					success: function(res) {
						// console.log(res);  
						callback(res)
					},
					fail: function(res) {
						console.log(res)
					},
				});
			});
		});
	},
	//打开位置  
	openlocation: function(data, callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.openLocation({ //根据传入的坐标打开地图  
					latitude: data.latitude,
					longitude: data.longitude
				});
			});
		});
	},
	//选择图片  
	chooseImage: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		//console.log(data);  
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseImage({
					count: 1,
					sizeType: ['compressed'],
					sourceType: ['album'],
					success: function(rs) {
						callback(rs)
					}
				})
			});
		});
	},
	//微信支付  
	wxpay: function(data, callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseWXPay({
					timestamp: data.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符  
					nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位  
					package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）  
					signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'  
					paySign: data.paysign, // 支付签名  
					success: function(res) {
						// console.log(res);  
						callback(res)
					},
					fail: function(res) {
						callback(res)
					},
				});
			});
		});
	},
	//微信扫码
	scanQRCode: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.scanQRCode({
					needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
					scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
					success: function(res) {
						// console.log(res);  
						callback(res);
					},
					fail: function(res) {
						callback(res)
					},
				});
			});
		});
	},
	//自定义分享  这里我统一调用了分享到朋友和朋友圈，可以自行定义
	share: function(callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
			
				//我的分享配置由后台返回，可以自定义
				http.get({
					url: 'getShareInfo'
				}).then(res => {
					const { shareInfo } = res.data;
					jweixin.updateAppMessageShareData({ //分享给朋友
						title: shareInfo.title,
						desc: shareInfo.description,
						imgUrl: shareInfo.image,
						link: shareInfo.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
						success: function() {
							// 用户确认分享后执行的回调函数
							callback(res);
						}
					});
					jweixin.updateTimelineShareData({ //分享到朋友圈
						title: shareInfo.title,
						desc: shareInfo.description,
						imgUrl: shareInfo.image,
						link: shareInfo.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
						success: function() {
							// 用户确认分享后执行的回调函数
							callback(res);
						}
					});
				});
			});
		});
	}
}

